package d8_genericity;

import d5_enum.A;

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 目标: 认识泛型
        ArrayList list = new ArrayList();
        list.add("黑马");
        list.add("深圳");
        list.add("Java");
        list.add(true);
        list.add(false);
        list.add(99.5);

        //这样子就是没有约束 ,就把<E>里面的E当做类型变量即可
        for (int i = 0; i < list.size(); i++) {
            Object o = list.get(i);
            System.out.println(o);
            String result = (String)o;
            System.out.println(result);//运行时会报错,应为boolean是不可能转成字符串的
        }

        //下面进行泛型约束
        //泛型概念:定义类,接口,方法是,
        // 同时声明了一个或则多个类型变量(如: <E>),
        // 称为泛型类,泛型接口,泛型方法,他们统称为泛型
        // ArrayList<String> list2 = new ArrayList<String>();
        ArrayList<String> list2 = new ArrayList<>();//JDK 1.7开始后面的类型可以不写
        list2.add("黑马");
        list2.add("深圳");
        list2.add("Java");

        for (int i = 0; i < list2.size(); i++) {
            String ele = list2.get(i);
            System.out.println(ele);
        }

    }
}
